﻿#region << 文件说明 >>

/*----------------------------------------------------------------
 * 命名空间：Vampirewal.Core.RuleEngine.Extensions
 * 唯一标识：b1ce883b-097a-4f34-beb3-5b4da994e855
 * 文件名：VampirewalRuleEngineExtension
 *
 * 创建者：杨程
 * 电子邮箱：235160615@qq.com
 * 创建时间：2023/10/11 16:40:11
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/

#endregion << 文件说明 >>

namespace Vampirewal.Core.RuleEngine;

/// <summary>
/// 扩展
/// </summary>
public static class VampirewalRuleEngineExtension
{
    /// <summary>
    /// 注册规则引擎
    /// </summary>
    /// <param name="services"></param>
    /// <param name="option">配置</param>
    public static void AddVampirewalRuleEngine(this IServiceCollection services, Action<VampirewalRuleEngineOption> option)
    {
        VampirewalRuleEngineOption op = new VampirewalRuleEngineOption();
        option?.Invoke(op);

        foreach (var item in op.TypeDic)
        {
            services.AddTransient(item.Value);
        }

        services.AddSingleton<IVampirewalRuleEngine, VampirewalRuleEngine>();

        services.AddSingleton(op);
    }
}